富文本编辑器
考虑到富文本编辑需要支持长文本的类型,目前大部分富文本使用自定义单个的Edittext无法实现View的复用,于是利用RecycleView为基础实现的富文本编辑器,目前处于开发过程中
前言对于富文本编辑器的实现,首先我们肯定会想到实现的编辑器需要支持的几个必要特性:
1.涉及大量文字,图片,文字样式的展示与编辑。2.涉及极其复杂的用户交互。
目前Github上我所了解的富文本编辑器基本上实现方式基于两种:
1.基于WebView拓展的富文本编辑器。2.基于EditText重写的富文本编辑器。对于这两种方案,这里提出一些我个人的看法。
1.WebView实现首先WebView的渲染性能一个弊端所在,其次当涉及极其复杂的人机交互,WebView的实现起来就会比较困难。还有一点就是WebView的兼容性也是一个需要考虑的一点。
2.EditText重写对于重写单个EditText,确实对于交互和文字渲染,样式支持,都有很强的拓展性。但是考虑到会存在大量的图片,这里就需要考虑到内存的情况,对于EditText来说,肯定不存在View的复用,基本上有多少图片,就要多少内存。另一方面原生的TextView对于大量文字的渲染一直被人诟病,对此也有很多对于TextView的性能优化的方案。
RecyclerView实现所以我最终选择使用RecyclerView作为实现富文本编辑器的实现方案。虽然有坑,但是也是一种可行性方案。(豆瓣的编辑器就是使用RecyclerView实现)优点:首先RecyclerVie作为一款原生组件,对于大量UI组件的展示有非常良好的性能,其次RecyclerView的复用机制对于内存消耗的控制提供了的很好的支持。缺点::当然这里也不是说RecyclerView就绝对是实现富文本编辑器的首选方案,我在实现的过程中也遇到了很多大坑,这里就随便列举几个:1.焦点的控制2.数据的拼接3.样式的存储4.光标的位置and much more...还好最后这些坑也找到了解决方案,所以这里分享一下这种实现方案,也为有需求的人提供一种可做参考的实现方案吧。
已实现功能1.文本的粗体、斜体、下划线、中划线、删除线、超